package com.xbongbong.saas.domain.entity;

import com.alibaba.fastjson.JSON;
import com.xbongbong.paas.toolbox.wrap.Entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author youli.chen
 * @version v1.0
 * @description: 话务中心坐席策略对账单表实体类
 * @date 2019/2/27 17:31
 * @since v1.0
 */
@Setter
@Getter
@ToString
public class CallCenterStatementEntity extends Entity {

    public CallCenterStatementEntity(){
    }

    /**
     * 主要用于充值
     *
     * @param corpid     公司ID
     * @param moduleType 微应用枚举类
     * @param amount     金额
     * @param type       记账单类型
     * @param memo       备注
     *
     * @author 章华隽
     * 创建时间：2018/3/28 上午11:08
     * 修改时间：
     * @version 3.20
     * @since 3.20
     */
    public CallCenterStatementEntity(String corpid, Integer moduleType, BigDecimal amount,
                                     int type, String memo) {
        this();
        this.corpid = corpid;
        this.moduleType = moduleType;
        this.amount = amount;
        this.type = type;
        this.memo = memo;
    }

    /**
     * 主要用于消费
     *
     * @param corpid        公司ID
     * @param moduleType    微应用枚举类
     * @param amount        金额
     * @param agentNameList 为哪些坐席进行消费
     * @param type          记账单类型
     * @param memo          备注
     *
     * @author 章华隽,陈有利
     * 创建时间：2018/3/28 上午11:08
     * 修改时间：
     * @version 3.20
     * @since 3.20
     */
    public CallCenterStatementEntity(String corpid, Integer moduleType, BigDecimal amount,
                                     List<String> agentNameList,Integer paidAgentNum ,int type, String memo) {
        this(corpid, moduleType, amount, type, memo);
        this.paidAgentNum = paidAgentNum;
        this.agentNameArray = JSON.toJSONString(agentNameList);
    }
    //========== properties ==========

    /**
     * 主键
     */
    private Long id;
    /**
     * 公司ID
     */
    private String corpid;
    /**
     * 微应用信息，参考AppStoreTypeEnum
     */
    private Integer moduleType;
    /**
     * 消费或充值金额
     */
    private BigDecimal amount;
    /**
     * 扣费的坐席名称数组
     */
    private String agentNameArray;

    /**
     * youli.chen
     * 该笔扣费记录的坐席数
     * @return
     */
    private Integer paidAgentNum;

    /**
     * 状态，0:消费 1:充值
     */
    private Integer type;
    /**
     * 套餐备注
     */
    private String memo;

    /**
     * youli.chen
     * 接入方案：1-平台固话线路、2-客户固话线路、3-客户手机线路
     * @return
     */
    private String platformLine;

    /**
     * youli.chen
     * 第三方结算坐席单价：平台结算-30元/月/坐席，客户结算-50元/月/坐席
     */
    private String unitPrice;

    /**
     * 创建时间
     */
    private Integer addTime;
    /**
     * 更新时间
     */
    private Integer updateTime;
    /**
     * 删除标记
     */
    private Integer del;

    /**
     * 扣费的坐席名称队列
     * 非持久层字段
     */
    private List<String> agentNameList;
    /**
     * 公司名称
     * 非持久层字段
     */
    private String corpName;
    /**
     * 坐席数
     * 非持久层字段
     */
    private int agentNum;
    /**
     * 用于前端显示的金额（保留两位小数）
     * 非持久层字段
     */
    private String amountShow;

    public BigDecimal getAmount() {
        if (amount == null) {
            return new BigDecimal(0);
        }
        return amount;
    }
}
